home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK2.toast / Development Kits (Disc 2) / TEC 1.3.1 / Headers & Libs / Interfaces / TextEncodingPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-12  |  7.9 KB  |  203 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingPlugin.h
  3.  
  4.      Contains:    Required interface for Text Encoding Converter-Plugins
  5.  
  6.      Version:    
  7.  
  8.      DRI:        Tom Naughton
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            BuildGod
  17.                  With Interfacer:    2.0d13   (PowerPC native)
  18.                  From:                TextEncodingPlugin.i
  19.                      Revision:        18
  20.                      Dated:            4/13/97
  21.                      Last change by:    TRN
  22.                      Last comment:    1647169: removed localized name API modified
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28. #ifndef __TEXTENCODINGPLUGIN__
  29. #define __TEXTENCODINGPLUGIN__
  30.  
  31. #ifndef __TEXTENCODINGCONVERTER__
  32. #include <TextEncodingConverter.h>
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT_SUPPORTED
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_ALIGN_SUPPORTED
  44. #pragma options align=mac68k
  45. #endif
  46.  
  47. /*
  48. ####################################################################################
  49.         Structs
  50. ####################################################################################
  51. */
  52. struct TECBufferContextRec {
  53.     TextPtr                         textInputBuffer;
  54.     TextPtr                         textInputBufferEnd;
  55.     TextPtr                         textOutputBuffer;
  56.     TextPtr                         textOutputBufferEnd;
  57.  
  58.     TextEncodingRunPtr                 encodingInputBuffer;
  59.     TextEncodingRunPtr                 encodingInputBufferEnd;
  60.     TextEncodingRunPtr                 encodingOutputBuffer;
  61.     TextEncodingRunPtr                 encodingOutputBufferEnd;
  62.  
  63. };
  64. typedef struct TECBufferContextRec TECBufferContextRec;
  65.  
  66. struct TECPluginStateRec {
  67.  
  68.     UInt8                             state1;
  69.     UInt8                             state2;
  70.     UInt8                             state3;
  71.     UInt8                             state4;
  72.  
  73.     UInt32                             longState1;
  74.     UInt32                             longState2;
  75.     UInt32                             longState3;
  76.     UInt32                             longState4;
  77.  
  78. };
  79. typedef struct TECPluginStateRec TECPluginStateRec;
  80.  
  81. struct TECConverterContextRec {
  82.  
  83.                                                                 /* public - manipulated externally and by plugin*/
  84.     Ptr                             pluginRec;
  85.     TextEncoding                     sourceEncoding;
  86.     TextEncoding                     destEncoding;
  87.     UInt32                             reserved1;
  88.     UInt32                             reserved2;
  89.     TECBufferContextRec             bufferContext;
  90.                                                                 /* private - manipulated only within Plugin*/
  91.     UInt32                             contextRefCon;
  92.     ProcPtr                         conversionProc;
  93.     ProcPtr                         flushProc;
  94.     ProcPtr                         clearContextInfoProc;
  95.     UInt32                             options1;
  96.     UInt32                             options2;
  97.     TECPluginStateRec                 pluginState;
  98.  
  99. };
  100. typedef struct TECConverterContextRec TECConverterContextRec;
  101.  
  102. struct TECSnifferContextRec {
  103.  
  104.                                                                 /* public - manipulated externally*/
  105.     Ptr                             pluginRec;
  106.     TextEncoding                     encoding;
  107.     ItemCount                         maxErrors;
  108.     ItemCount                         maxFeatures;
  109.     TextPtr                         textInputBuffer;
  110.     TextPtr                         textInputBufferEnd;
  111.     ItemCount                         numFeatures;
  112.     ItemCount                         numErrors;
  113.                                                                 /* private - manipulated only within Plugin*/
  114.     UInt32                             contextRefCon;
  115.     ProcPtr                         sniffProc;
  116.     ProcPtr                         clearContextInfoProc;
  117.     TECPluginStateRec                 pluginState;
  118. };
  119. typedef struct TECSnifferContextRec TECSnifferContextRec;
  120.  
  121. /*
  122. ####################################################################################
  123.         Functional Messages
  124. ####################################################################################
  125. */
  126. typedef OSStatus (*TECPluginNewEncodingConverterPtr)(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
  127. typedef OSStatus (*TECPluginClearContextInfoPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  128. typedef OSStatus (*TECPluginConvertTextEncodingPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  129. typedef OSStatus (*TECPluginFlushConversionPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
  130. typedef OSStatus (*TECPluginDisposeEncodingConverterPtr)(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
  131. typedef OSStatus (*TECPluginNewEncodingSnifferPtr)(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
  132. typedef OSStatus (*TECPluginClearSnifferContextInfoPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  133. typedef OSStatus (*TECPluginSniffTextEncodingPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  134. typedef OSStatus (*TECPluginDisposeEncodingSnifferPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
  135. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  136. typedef OSStatus (*TECPluginGetCountAvailableTextEncodingPairsPtr)(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  137. typedef OSStatus (*TECPluginGetCountDestinationTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
  138. typedef OSStatus (*TECPluginGetCountSubTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
  139. typedef OSStatus (*TECPluginGetCountAvailableSniffersPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  140. typedef OSStatus (*TECPluginGetTextEncodingInternetNamePtr)(TextEncoding textEncoding, Str255 encodingName);
  141. typedef OSStatus (*TECPluginGetTextEncodingFromInternetNamePtr)(TextEncoding *textEncoding, ConstStr255Param encodingName);
  142. typedef OSStatus (*TECPluginGetCountWebEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  143. typedef OSStatus (*TECPluginGetCountMailEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
  144. /*
  145. ####################################################################################
  146.         Dispatch Table Definition
  147. ####################################################################################
  148. */
  149.  
  150. enum {
  151.     kTECPluginDispatchTableVersion1 = 0x00010000,                /* 1.0 through 1.0.3 releases*/
  152.     kTECPluginDispatchTableVersion1_1 = 0x00010001,                /* 1.1 releases*/
  153.     kTECPluginDispatchTableVersion1_2 = 0x00010002,                /* 1.2 releases*/
  154.     kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2
  155. };
  156.  
  157. struct TECPluginDispatchTable {
  158.  
  159.     TECPluginVersion                 version;
  160.     TECPluginVersion                 compatibleVersion;
  161.     TECPluginSignature                 PluginID;
  162.  
  163.     TECPluginNewEncodingConverterPtr  PluginNewEncodingConverter;
  164.     TECPluginClearContextInfoPtr     PluginClearContextInfo;
  165.     TECPluginConvertTextEncodingPtr  PluginConvertTextEncoding;
  166.     TECPluginFlushConversionPtr     PluginFlushConversion;
  167.     TECPluginDisposeEncodingConverterPtr  PluginDisposeEncodingConverter;
  168.  
  169.     TECPluginNewEncodingSnifferPtr     PluginNewEncodingSniffer;
  170.     TECPluginClearSnifferContextInfoPtr  PluginClearSnifferContextInfo;
  171.     TECPluginSniffTextEncodingPtr     PluginSniffTextEncoding;
  172.     TECPluginDisposeEncodingSnifferPtr  PluginDisposeEncodingSniffer;
  173.  
  174.     TECPluginGetCountAvailableTextEncodingsPtr  PluginGetCountAvailableTextEncodings;
  175.     TECPluginGetCountAvailableTextEncodingPairsPtr  PluginGetCountAvailableTextEncodingPairs;
  176.     TECPluginGetCountDestinationTextEncodingsPtr  PluginGetCountDestinationTextEncodings;
  177.     TECPluginGetCountSubTextEncodingsPtr  PluginGetCountSubTextEncodings;
  178.     TECPluginGetCountAvailableSniffersPtr  PluginGetCountAvailableSniffers;
  179.     TECPluginGetCountWebEncodingsPtr  PluginGetCountWebTextEncodings;
  180.     TECPluginGetCountMailEncodingsPtr  PluginGetCountMailTextEncodings;
  181.  
  182.     TECPluginGetTextEncodingInternetNamePtr  PluginGetTextEncodingInternetName;
  183.     TECPluginGetTextEncodingFromInternetNamePtr  PluginGetTextEncodingFromInternetName;
  184.  
  185. };
  186. typedef struct TECPluginDispatchTable TECPluginDispatchTable;
  187.  
  188.  
  189. #if PRAGMA_ALIGN_SUPPORTED
  190. #pragma options align=reset
  191. #endif
  192.  
  193. #if PRAGMA_IMPORT_SUPPORTED
  194. #pragma import off
  195. #endif
  196.  
  197. #ifdef __cplusplus
  198. }
  199. #endif
  200.  
  201. #endif /* __TEXTENCODINGPLUGIN__ */
  202.  
  203.